package com.zyf.pattern.strategy.pay;

import com.zyf.pattern.strategy.pay.payport.PayStrategy;
import com.zyf.pattern.strategy.pay.payport.PayType;
import com.zyf.pattern.strategy.pay.payport.Payment;

/**
 * 模拟订单
 * create by yifeng
 */
public class Order {

    private String uid;
    private String OrderId;
    private Double amount;

    public Order(String uid, String orderId, Double amount) {
        this.uid = uid;
        OrderId = orderId;
        this.amount = amount;
    }

    // 这个参数，完全可以用Payment接口来代替，为什么不呢？
    // 完美解决了 switch的过程，不需要在代码逻辑中写switch
    // 不需要写if， else if
    public PayState pay(PayType payType) {

//        return payType;
        return payType.get().pay(this.uid, this.amount);
    }

    public PayState pay(String payType) {
        return PayStrategy.get(payType).pay(this.uid, this.amount);
    }
}
